#!/bin/bash


# test 命令
# 用于检测某个条件是否成立，它可以进行数值、字符和文件三个方面的测试。

echo '----------------数值测试--------------------'
# 数值测试
#   -eq	等于则为真
#   -ne	不等于则为真
#   -gt	大于则为真
#   -ge	大于等于则为真
#   -lt	小于则为真
#   -le	小于等于则为真


num1=100
num2=100
if test $[num1] -eq $[num2]
then
    echo '两个数相等！'
else
    echo '两个数不相等！'
fi
echo '--------------字符串测试---------------------'
# 字符串测试
#   =	等于则为真
#   !=	不相等则为真
#   -z 字符串 : 字符串的长度为零则为真
#   -n 字符串 : 字符串的长度不为零则为真
num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi
echo '-----------文件测试-------------------------'
# 文件测试
#   -e 文件名	如果文件存在则为真
#   -r 文件名	如果文件存在且可读则为真
#   -w 文件名	如果文件存在且可写则为真
#   -x 文件名	如果文件存在且可执行则为真
#   -s 文件名	如果文件存在且至少有一个字符则为真
#   -d 文件名	如果文件存在且为目录则为真
#   -f 文件名	如果文件存在且为普通文件则为真
#   -c 文件名	如果文件存在且为字符型特殊文件则为真
#   -b 文件名	如果文件存在且为块特殊文件则为真
cd /bin
if test -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

echo '---------------逻辑操作---------------------'
# 另外，Shell 还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来，
# 其优先级为： ! 最高， -a 次之， -o 最低

cd /bin
if test -e ./notFile -o -e ./bash
then
    echo '至少有一个文件存在!'
else
    echo '两个文件都不存在'
fi


echo '---------------流程控制---------------------'
# `` ,$() : 可执行命令 : ` ls / `  , $(ls /)

# if condition
# then
#   command1
#   ....
#   commandN
# fi

# if condition
# then
#    command1
#    ...
#    commandN
# else
#    command
# fi

# if condition1
# then
#    command1
# elif condition2
# then
#    command2
# else
#    commandN
# fi

if [ $(ps -ef | grep -c "ssh") -gt 1 ]
then
  echo "true"
fi
echo '----------------------------------'
# 写成一行，需要终端提示符
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

echo '----------------------------------'

a=10
b=20
if [ $a == $b ]  # 使用[] 符号 包含条件
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi
echo '----------------------------------'
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2] # 使用test命令作为条件
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi

echo '------------- for 循环---------------------'
# for var in item1 item2 ... itemN
# do
#    command1
#    command2
#    ...
#    commandN
# done

for loop in 1 2 3
do
  echo $loop
done
echo '-----------------------'

for str in this is a string
do
  echo $str
done

echo '------------- while 循环---------------------'
# while condition
# do
#    command
# done
int=1
while(($int<=5))
do
  echo $int
  let "int++"
done
echo '---------------------------------'
echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名: '
while read FILM
do
    echo "是的！$FILM 是一个好网站"
done
# 输入信息被设置为变量FILM
echo '-----------无限循环----------------------'

#while :
#do
#    command
#done

#while true
#do
#    command
#done

#for (( ; ; ))

echo '-----------until 循环 ----------------------'
#until condition
#do
#    command
#done

# until 循环与 while 循环 相反，
# until 循环的 condition =true 时，停止循环
# while 循环的 condition =false 时，停止循环

echo '-----------case ... esac ----------------------'
# 与其他语言中的 switch ... case 语句类似
#case 值 in
#模式1)
#    command1
#    command2
#    ...
#    commandN
#    ;;
#模式2）
#    command1
#    command2
#    ...
#    commandN
#    ;;
#esac

# 匹配发现取值符合某一模式后，其间所有命令开始执行直至 ;;。

echo '-----------break 命令 ----------------------'


echo '-----------continue 命令 ----------------------'
